package com.neusoft.neuiotms.dcam.fixed.dto;

import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.Length;

import com.neusoft.bizcore.web.dto.AbstractAuditDTO;
import com.neusoft.neuiotms.dcam.fixed.model.enums.InventoryDutyResultStatus;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
public class InventoryResultDTO extends AbstractAuditDTO {

    private static final long serialVersionUID = 1L;

    @NotBlank(message = "资产名不能为空")
    @Length(max = 255, message = "资产名不能超过{max}位")
    private String name;

    @Length(max = 255, message = "固资编号不能超过{max}位")
    private String code;

    @NotNull(message = "资产类型名称不能为空")
    private String type;

    /** 序列号 */
    private String serialnumber;
    /** 合同编码（复制想） */
    private String contractNo;
    /** 位置编码（复制想） */
    private String locationCode;
    /** 位置名称（复制想） */
    private String locationName;

    @NotNull(message = "资产状态不能为空")
    private String status = "idle";

    /** 使用人用户名 */
    private String userId;
    /** 使用人姓名 */
    @Length(max = 255, message = "使用人不能超过{max}位")
    private String userName;
    /** 使用部门 */
    @Length(max = 255, message = "使用部门不能超过{max}位")
    private String orgId;
    /** 使用部门名称 */
    @Length(max = 255, message = "使用部门不能超过{max}位")
    private String orgName;

    /** 变更使用人ID */
    private String updateUserId;

    /** 变更使用人姓名 */
    @Length(max = 255, message = "使用人不能超过{max}位")
    private String updateUserName;

    /** 变更使用部门 */
    @Length(max = 255, message = "使用部门不能超过{max}位")
    private String updateOrgCode;

    /** 变更使用部门名称 */
    @Length(max = 255, message = "使用部门不能超过{max}位")
    private String updateOrgName;
    /** 变更位置编码 */
    private String updateLocationCode;
    /** 变更位置名称 */
    private String updateLocationName;

    /** 盘点备注 */
    private String note;

    /** 盘点结果状态 */
    @Enumerated(EnumType.STRING)
    @NotNull(message = "盘点结果状态不能为空")
    private InventoryDutyResultStatus dutyResultStatus = InventoryDutyResultStatus.wait;

    /** 盘点任务ID */
    long dutyId;
    /** 盘点任务名称 */
    String dutyName;
    /** 计划ID */
    long planId;
    /** 计划名称 */
    String planName;
    /** 计划名称 */
    Long assetId;

    /** 机房 */
    private String computerRoom;
    /** 机柜 */
    private String cabinet;

}
